Jump to content
  • 0

Верстка верхнего меню


an1401
 Share

Question

Здравствуйте уважаемые, у меня такой вопрос...

Нужен результат вот такой:

38af91d44883.jpg

при навидение на ссылку у ней появляется вот такой фон.

Никак не пойму как это сделать, помогите пожалуйста советом.

код:

<div id="top_menu">
<ul>
<li><a href="/">Главная страница</a></li>
<li><a href="/">О компании</a></li>
<li><a href="/">Услуги</a></li>
<li><a href="/">Популярное</a></li>
<li><a href="/">Контактная информация</a></li>
</ul>
</div>

Link to comment
Share on other sites

Recommended Posts

  • 0

Эх, а я уже было обрадовался :unsure:

Вот тебе, твоё знание CSS3 и не пригодилось) А как сделать на CSS2, в курсе? Вот на таких вещах опыт и набирается.

Да ладно тебе, чего же не в курсе-то? Но копаться я не хочу с этими ИЕ, честно :D

Тут все простенько, быстренько, аккуратненько :)

p.s. делегирую тебе эту почетную миссию! А я пойду дальше разбираться с Оперой и border-radius :lol:

Edited by Softlink
Link to comment
Share on other sites

  • 0

Эх, а я уже было обрадовался :unsure:

Спасибо, если придерживаться заданного дизайна, внешний вид меню можно отредактировать?

Возможно это реализовать например через фоновые картинки элементов?

Например эту картинку порезать как нибудь и присвоить фоном элементам, ну чтобы было как в заданном дизайне?

ffb43f837431.jpg

Link to comment
Share on other sites

  • 0

an1401,

Вот, смотри. Делаешь по такому же сценарию. http://psywalker.ru/Forum/Menu/10/menu/main-page.html

А дальше уже пихаешь в пункты ещё один тег, для нижней хрени. Её абсолютом в середину.

Эх, а я уже было обрадовался :unsure:

Вот тебе, твоё знание CSS3 и не пригодилось) А как сделать на CSS2, в курсе? Вот на таких вещах опыт и набирается.

Да ладно тебе, чего же не в курсе-то? Но копаться я не хочу с этими ИЕ, честно :D

Тут все простенько, быстренько, аккуратненько :)

p.s. делегирую тебе эту почетную миссию! А я пойду дальше разбираться с Оперой и border-radius :lol:

Блин, а чё, не сделал что ли ещё? :unsure:

Link to comment
Share on other sites

  • 0

an1401,

Вот, смотри. Делаешь по такому же сценарию. http://psywalker.ru/Forum/Menu/10/menu/main-page.html

А дальше уже пихаешь в пункты ещё один тег, для нижней хрени. Её абсолютом в середину.

Эх, а я уже было обрадовался :unsure:

Вот тебе, твоё знание CSS3 и не пригодилось) А как сделать на CSS2, в курсе? Вот на таких вещах опыт и набирается.

Да ладно тебе, чего же не в курсе-то? Но копаться я не хочу с этими ИЕ, честно :D

Тут все простенько, быстренько, аккуратненько :)

p.s. делегирую тебе эту почетную миссию! А я пойду дальше разбираться с Оперой и border-radius :lol:

Блин, а чё, не сделал что ли ещё? :unsure:

Да там короче отказались от этой затеи совсем. Т.е. меня спросили, как можно это сделать, ну я сказал, что без скриптов, наверное, не получится. Ну и все. А теперь у меня спортивный интерес. Сижу пробую разные способы, может где-нибудь вылезет то что надо. :)

Link to comment
Share on other sites

  • 0

Да там короче отказались от этой затеи совсем. Т.е. меня спросили, как можно это сделать, ну я сказал, что без скриптов, наверное, не получится. Ну и все. А теперь у меня спортивный интерес. Сижу пробую разные способы, может где-нибудь вылезет то что надо. :)

Ага, отлично, если чё получится, пиши мне сразу))

Link to comment
Share on other sites

  • 0

Да там короче отказались от этой затеи совсем. Т.е. меня спросили, как можно это сделать, ну я сказал, что без скриптов, наверное, не получится. Ну и все. А теперь у меня спортивный интерес. Сижу пробую разные способы, может где-нибудь вылезет то что надо. :)

Ага, отлично, если чё получится, пиши мне сразу))

Обязательно :) Если получится... :dash::D

Link to comment
Share on other sites

  • 0

А размер треугольника снизу можно как нибудь увеличить, через ваш предложенный вариант?

Конечно Он меняется вот здесь:

border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-top: 15px solid #4472e8;

left и right это бедра треугольника, top - основание его. Поиграйтесь, посмотрите.

Link to comment
Share on other sites

  • 0

Треугольник границами формируется, есть такая хитрушка в CSS. Вообще, вариант, который Softlink предложил самый лучший. Под IE6-8 его можно доработать так, чтобы в этих браузерах только полоса появлялась синяя без скруглений. Некрасиво да, но пусть мучаются пользователи, раз такое старьё у них.

Link to comment
Share on other sites

  • 0

А размер треугольника снизу можно как нибудь увеличить, через ваш предложенный вариант?

Вроде разобрался как увеличить?

Подскажите по css? что для чего

li a:hover:after{
content: ' '; —--?
position:absolute; —- понятно.
border-left: 10px solid transparent; —-?
border-right: 10px solid transparent; —--?
border-top: 5px solid #2B6DB7; —-?
bottom:-4px; —-- понятно
left:43%; —- понятно
}

Link to comment
Share on other sites

  • 0

Здесь мы использовали псевдоэлемент

li a:hover:after{
content: ' '; мы можем задать какой-нибудь контент для него. Т.е. он может выполнять не только декоративную функцию.
position:absolute; —- понятно.
Вот то, что ниже(3 строчки) - это мнимый прямоугольник. Мы у него отрезали два угла путем задания только трех бордеров. Однако каждый бордер должен иметь свой цвет. Если мы оставим какой-нибудь цвет для любого из бедер, то получится некрасиво и совсем не то, что надо. Поэтому мы через transparent делаем их прозрачными, оставляя цвет только для основания. Кстати изменение его значения будет либо вытягивать либо уменьшать высоту треугольника.
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-top: 5px solid #2B6DB7;

bottom:-4px; —-- понятно
left:43%; —- понятно
}

В общем, поиграйтесь со значениями, станет все понятно. :)

Link to comment
Share on other sites

  • 0

А размер треугольника снизу можно как нибудь увеличить, через ваш предложенный вариант?

Вроде разобрался как увеличить?

Подскажите по css? что для чего

li a:hover:after{
content: ' '; —--?
position:absolute; —- понятно.
border-left: 10px solid transparent; —-?
border-right: 10px solid transparent; —--?
border-top: 5px solid #2B6DB7; —-?
bottom:-4px; —-- понятно
left:43%; —- понятно
}

content: ' '; —--?

Чтобы псевдоэлемент отобразился, у него должен быть какой нибудь контент.

border-left: 10px solid transparent; —-?

border-right: 10px solid transparent; —--?

border-top: 5px solid #2B6DB7; —-?

Для квадратика.

Link to comment
Share on other sites

  • 0

Вот ещё есть ссылка почитать, если интересно - http://habrahabr.ru/blogs/css/126207/.

а если вместо треуголка будет типа вот этой фигура:

1e912a1c235e.jpg

как в этом случае ее реализовать?

Картинкой.

Link to comment
Share on other sites

  • 0

Вот ещё есть ссылка почитать, если интересно - http://habrahabr.ru/blogs/css/126207/.

а если вместо треуголка будет типа вот этой фигура:

как в этом случае ее реализовать?

это какая фигура-то? Треугольник с наклоном или что?

Link to comment
Share on other sites

  • 0

Вот ещё есть ссылка почитать, если интересно - http://habrahabr.ru/blogs/css/126207/.

а если вместо треуголка будет типа вот этой фигура:

как в этом случае ее реализовать?

это какая фигура-то? Треугольник с наклоном или что?

ИЕ6 будет пофиг твой наклон) Для него картинка - самый проверенный и надёжный способ.

Link to comment
Share on other sites

  • 0

Вот ещё есть ссылка почитать, если интересно - http://habrahabr.ru/blogs/css/126207/.

а если вместо треуголка будет типа вот этой фигура:

1e912a1c235e.jpg

как в этом случае ее реализовать?

Картинкой.

:rolleyes:

круто, спасибо

Link to comment
Share on other sites

  • 0

Добрый день!

И все же у меня никак не получается сделать такое:

79f88e4bbe5d.jpg

прием используемый выше, не дает желаемого результата.

Если делать выделение тэга li фоном, то все пункты меню становятся одинаковой ширины, что в данном случае не подходит, так как названия пунктов меню разные(одно, два слова)...

Что посоветуете в этом случае?

Link to comment
Share on other sites

  • 0

Навскидку предложу. Сделайте картинку с этими уголками, но ооооочень длинную, чтобы наверняка на любой пункт хватило. Дальше так примерно:

li {
padding-right: ширина_правого_уголка;
}

li a {
display: block;
height: 100%;
}

li:hover {
background: url(картинка) left top no-repeat;
}

li:hover a {
background: url(картинка) right top no-repeat;
}


[...]


<li><a href="#">Ссылка</a></li>

Поковырять надо ещё, чтоб подогнать под ваш случай. Но принцип тот же.

UPD Лучше, наверно, внутрь ссылки вложить спан, и задавать фоны не для li и ссылки, а для ссылки и спана. Надо только отступы так подобрать, чтобы из-под правого уголка подложка не проглядывала.

Edited by Gaspode
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy